#ifndef _DRV_KEY_H_
#define _DRV_KEY_H_

#define KEY_INPUT_DEV_PATH "/dev/input/event0"
/**
 * @brief key_event, 按键事件传递结构体
 * @member code:
 * 		按键的键值, 用于区分不同的按键, 可在DTS中adkeys/gpiokeys节点的linux,code属性值指定
 * @member stat:
 * 		按键当前的状态, 记录按键按压或者释放时的状态变化
 * 		(1) 当被测试驱动为ak_gpio_keys时, 按下时固定为1, 松开时固定为0
 * 		(2) 当被测试驱动为ak_adc_key时, 按下时的值根据DTS上adkeys节点中的pressed-input属性的值来确定
 */
struct key_event{
   int code;
   int state;
};

int ak_drv_key_open(void);

/**
 * ak_drv_key_get_event: get key event .
 * @key[OUT]:  key event
 * @ms[IN]:  time out , <0  block; = 0  unblock; > 0 wait time.
 * return: 0 - success; otherwise error code;
 */
int ak_drv_key_get_event(struct key_event *key, long ms);

/**
 * ak_drv_key_close: close key .
 * @handle[IN]:  key handle
 * return: 0 - success; otherwise error;
 */
int ak_drv_key_close(void);


#endif
